package com.goldcontrol.cloudweb.service;

import com.alibaba.fastjson.JSONObject;
import com.goldcontrol.cloudweb.mapper.TemplateMapper;
import com.goldcontrol.cloudweb.model.TemplateEntity;
import jdk.nashorn.internal.runtime.arrays.IteratorAction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class TemplateService {

    @Autowired
    TemplateMapper templateMapper;

    public JSONObject getProjectTemplate(Integer projectId){
        Integer templateId = templateMapper.getProjectTemplateId(projectId);
        if(templateId == null){
            return new JSONObject();
        }else{
            List<TemplateEntity> list = templateMapper.selectByFields(templateId);
            if(list != null && list.size() > 0){
                TemplateEntity entity = list.get(0);
                String templateName = entity.getTemplateName();
                JSONObject result = new JSONObject();
                JSONObject dataRes = new JSONObject();
                result.put("templateName",templateName);
                for(TemplateEntity templateEntity : list){
                    String item =templateEntity.getItem();
                    JSONObject dataObject = new JSONObject();
                    dataObject.put("alias",templateEntity.getAlias());
                    dataObject.put("val",templateEntity.getVal());
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put(item,dataObject);
                    dataRes.putAll(jsonObject);
                }
                result.put("items",dataRes);
                return result;
            }
            return new JSONObject();
        }
    }

    public Integer getProjectTemplateId(Integer projectId){
        return templateMapper.getProjectTemplateId(projectId);
    }

    public void addTemplate(TemplateEntity templateEntity){
        if(checkExist(templateEntity)){
            templateMapper.update(templateEntity);
        }else{
            templateMapper.insert(templateEntity);
        }
    }

    public void deleteProjectTemplate(Integer projectId){
        templateMapper.deleteProjectTemplate(projectId);
    }

    public boolean checkExist(TemplateEntity templateEntity){
        Map<String,Object> param = new HashMap<>();
        param.put("templateId",templateEntity.getTemplateId());
        param.put("item",templateEntity.getItem());
        int count = templateMapper.selectCount(param);
        return count > 0;
    }

    public int getId(){
        return templateMapper.getNextId();
    }

    public void addProjectTemplate(int projectId,int templateId){
        Map<String,Object> param = new HashMap<>();
        param.put("projectId",projectId);
        param.put("templateId",templateId);
        templateMapper.addProjectTemplate(param);
    }

}
